import cv2
import numpy as np

img = cv2.imread('cat_dog.jpg')

cv2.imshow('Original Image', img)

# 高斯模糊是高斯函数对图像进行模糊处理的结果。
# 它是图形软件中广泛使用的效果，通常用于减少图像噪点和减少细节。
# 在应用我们的机器学习或深度学习模型之前，它也被用作预处理阶段。
gaussian = cv2.GaussianBlur(img, (7, 7), 0)
cv2.imshow('Gaussian Blurring', gaussian)

# 中值滤波是一种非线性数字滤波技术，通常用于去除图像或信号中的噪声。
# 中值滤波在数字图像处理中得到了广泛的应用，因为在一定条件下，
# 中值滤波可以在去除噪声的同时保留边缘。它是去除椒盐噪声的最佳算法之一。
# (to remove Salt and pepper noise)
median = cv2.medianBlur(img, 5)
cv2.imshow('Median Blurring', median)

# 双边滤波器是用于图像的非线性、边缘保持和降噪平滑滤波器。
# 它将每个像素的强度替换为附近像素的强度值的加权平均值。
# 这个权重可以基于高斯分布。因此，锐利的边缘被保留，而弱的边缘被丢弃。
bilateral = cv2.bilateralFilter(img, 9, 75, 75)
cv2.imshow('Bilateral Blurring', bilateral)

cv2.waitKey(0)
cv2.destroyAllWindows()